/*
 * 强制类型转换出现的一些情况分析
 */
#include <stdio.h>

int main()
{
	int a;
	int *pa;
	
	pa=&a;
	a=0x12345678;

	printf("int型指针pa的值为：%x\n",pa);
	printf("char型指针pa的值为：%x\n\n",(char *)pa);

	printf("int型指针pa所指向的内存单元的值为：%x\n",*pa);
	printf("char型指针pa所指向的内存单元的值为：%x\n",*(char *)pa);

	//判断大小端模式
	if(0x78 == *(char *)pa){
		printf("小端模式！\n");
	}else{
		printf("大端模式！\n");
	}
}

/*
 * int型占4个字节，而char型占1个字节，强制转换后，内存单元中的值不变
 * 但指针指向的内存单元却发生了变化，转换之前是指向4个字节的内存单元，转换后指向一个字节的内存单元
 * 至于这一个内存单元中存储的内容到底是什么，则取决于机器中的大小端模式:
 * 所谓小端模式：数据的低位保存在内存的低地址中
 * 大端模式：数据的低位保存在内存的高地址中
 * 通常的计算机中并不太需关注这个问题，只有在想ARM,DSP这些芯片中要注意这个问题
 *
 */
